
#ifndef LOG_H__
#define LOG_H__

#ifdef __cplusplus
extern "C" {
#endif



#define LOG_BASE_LEVEL      (0)
#define LOG_ERR_LEVEL       (LOG_BASE_LEVEL + 1)
#define LOG_WARN_LEVEL      (LOG_ERR_LEVEL + 1)
#define LOG_INFO_LEVEL      (LOG_WARN_LEVEL + 1)
#define LOG_DEBUG_LEVEL     (LOG_INFO_LEVEL + 1)


#define             LOG_IS_SALOF

#define             LOG_LEVEL                      LOG_INFO_LEVEL  



#ifdef LOG_IS_SALOF
    #include "salof.h"

    #define LOG_D(fmt, ...)    SALOF_LOG_DEBUG(fmt, ##__VA_ARGS__)
    #define LOG_I(fmt, ...)    SALOF_LOG_INFO(fmt, ##__VA_ARGS__)
    #define LOG_W(fmt, ...)    SALOF_LOG_WARN(fmt, ##__VA_ARGS__)
    #define LOG_E(fmt, ...)    SALOF_LOG_ERR(fmt, ##__VA_ARGS__)
    #define LOG(fmt, ...)      SALOF_LOG_DEF_INF(fmt, ##__VA_ARGS__)
    #define log_init   salof_init
#else
    #include <stdio.h>
    
#if LOG_LEVEL < LOG_DEBUG_LEVEL
    #define LOG_D(fmt, ...)
#else
    #define LOG_D(fmt, ...)        { printf(fmt, ##__VA_ARGS__); printf("\n");}
#endif

#if LOG_LEVEL < LOG_INFO_LEVEL
    #define LOG_I(fmt, ...)
#else
    #define LOG_I(fmt, ...)        { printf(fmt, ##__VA_ARGS__); printf("\n");}
#endif

#if LOG_LEVEL < LOG_WARN_LEVEL
    #define LOG_W(fmt, ...)
#else
    #define LOG_W(fmt, ...)        { printf(fmt, ##__VA_ARGS__); printf("\n");}
#endif

#if LOG_LEVEL < LOG_ERR_LEVEL
    #define LOG_E(fmt, ...)
#else
    #define LOG_E(fmt, ...)        { printf(fmt, ##__VA_ARGS__); printf("\n");}
#endif

#if LOG_LEVEL < LOG_BASE_LEVEL
    #define LOG(fmt, ...)
#else
    #define LOG(fmt, ...)          { printf(fmt, ##__VA_ARGS__); printf("\n");}
#endif

    #define mqtt_log_init()
#endif




#ifdef __cplusplus
}
#endif



#endif /* _LOG_H_ */
